function dfs(p,pb,level,res) {
    if (level == p.length + 1) {
        console.log(res);
        return ;
    }
    for(var i = 0; i < p.length; i++) {
        var cur = p[i]; // 获取当前元素
        // 判断当前元素
        if (!pb[i]) {
            // 当前元素没有被使用
            res.push(p[i]); // 将当前元素添加到res中
            pb[i] = true; // 修改当前元素为true表示已经被选中了
            dfs(p,pb,level+1,res); // 递归dfs
            res.pop(); // 还原
            pb[i] = false; // 还原
        }
    }
}

/**
 * 1. 分析退出条件
 *      res.length
 * @param s: 一串没有小数点的ip地址
 * @param index：当前ip地址的位置
 * @param level：遍历层级 level 从1 开始
 * @param res：每轮结果
 */
var res = []; // 默认是全局变量
function dfs1(s,index) {
    // 判断退出递归的条件
    if (res.length == 4 || index == s.length - 1) {
        if (res.length == 4 && index == s.length - 1) {
            console.log(res.join("."));
        }
        return;
    }
    // dfs部分
    for(var i = 0; i < 4; i++) {
        var temp = s.substr(index+1,i);
        if (parseInt(temp) < 256 && (temp == '0' || !temp.startsWith('0'))) {
            res.push(temp);
            dfs1(s,index+i);
            res.pop();
        }
    }
}

